using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Attributes;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Attributes.DomainAttributes;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Enums;
using System.Collections.Generic;
using System.ComponentModel;

namespace Baci.ArcGIS._DataManagementTools._Raster._RasterProperties
{
    /// <summary>
    /// <para>Build Pyramids And Statistics</para>
    /// <para>Traverses a folder structure, building pyramids and calculating statistics for all the raster datasets it contains. It can also build pyramids and calculate statistics for all the items in a mosaic dataset.</para>
    /// <para>遍历文件夹结构，构建金字塔并计算其包含的所有栅格数据集的统计数据。它还可以构建金字塔并计算镶嵌数据集中所有项目的统计数据。</para>
    /// </summary>    
    [DisplayName("Build Pyramids And Statistics")]
    public class BuildPyramidsandStatistics : AbstractGPProcess
    {
        /// <summary>
        /// 无参构造
        /// </summary>
        public BuildPyramidsandStatistics()
        {

        }

        /// <summary>
        /// 有参构造
        /// </summary>
        /// <param name="_in_workspace">
        /// <para>Input Data or Workspace</para>
        /// <para><xdoc>
        ///   <para>The workspace that contains all the raster datasets or mosaic datasets to be processed.</para>
        ///   <para>If the workspace includes a mosaic dataset, only the statistics associated with the mosaic dataset will be included. The statistics associated with the items within the mosaic dataset will not be included.</para>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>包含要处理的所有栅格数据集或镶嵌数据集的工作空间。</para>
        ///   <para>如果工作空间包含镶嵌数据集，则仅包含与镶嵌数据集关联的统计数据。与镶嵌数据集中的项目关联的统计数据将不包括在内。</para>
        /// </xdoc></para>
        /// </param>
        public BuildPyramidsandStatistics(object _in_workspace)
        {
            this._in_workspace = _in_workspace;
        }
        public override string ToolboxName => "Data Management Tools";

        public override string ToolName => "Build Pyramids And Statistics";

        public override string CallName => "management.BuildPyramidsandStatistics";

        public override List<string> AcceptEnvironments => ["parallelProcessingFactor", "pyramid", "rasterStatistics"];

        public override object[] ParameterInfo => [_in_workspace, _include_subdirectories.GetGPValue(), _build_pyramids.GetGPValue(), _calculate_statistics.GetGPValue(), _BUILD_ON_SOURCE.GetGPValue(), _block_field, _estimate_statistics.GetGPValue(), _x_skip_factor, _y_skip_factor, _ignore_values, _pyramid_level, _SKIP_FIRST.GetGPValue(), _resample_technique.GetGPValue(), _compression_type.GetGPValue(), _compression_quality, _skip_existing.GetGPValue(), _out_workspace, _where_clause, _sips_mode.GetGPValue()];

        /// <summary>
        /// <para>Input Data or Workspace</para>
        /// <para><xdoc>
        ///   <para>The workspace that contains all the raster datasets or mosaic datasets to be processed.</para>
        ///   <para>If the workspace includes a mosaic dataset, only the statistics associated with the mosaic dataset will be included. The statistics associated with the items within the mosaic dataset will not be included.</para>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>包含要处理的所有栅格数据集或镶嵌数据集的工作空间。</para>
        ///   <para>如果工作空间包含镶嵌数据集，则仅包含与镶嵌数据集关联的统计数据。与镶嵌数据集中的项目关联的统计数据将不包括在内。</para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Input Data or Workspace")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _in_workspace { get; set; }


        /// <summary>
        /// <para>Include Sub-directories</para>
        /// <para><xdoc>
        ///   <para>Specify whether to include subdirectories.</para>
        ///   <bulletList>
        ///     <bullet_item>Unchecked—Does not include subdirectories.</bullet_item><para/>
        ///     <bullet_item>Checked—Includes all the raster datasets within the subdirectories when loading. This is the default.</bullet_item><para/>
        ///   </bulletList>
        ///   <para>Mosaic datasets must be specified as an input workspace if you want to include the items within the mosaic dataset. Otherwise, only the statistics associated with the mosaic dataset will be used.</para>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定是否包含子目录。</para>
        ///   <bulletList>
        ///     <bullet_item>未选中 - 不包括子目录。</bullet_item><para/>
        ///     <bullet_item>选中 - 加载时包括子目录中的所有栅格数据集。这是默认设置。</bullet_item><para/>
        ///   </bulletList>
        ///   <para>如果要在镶嵌数据集中包含项目，则必须将镶嵌数据集指定为输入工作空间。否则，将仅使用与镶嵌数据集关联的统计数据。</para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Include Sub-directories")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _include_subdirectories_value _include_subdirectories { get; set; } = _include_subdirectories_value._true;

        public enum _include_subdirectories_value
        {
            /// <summary>
            /// <para>INCLUDE_SUBDIRECTORIES</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("INCLUDE_SUBDIRECTORIES")]
            [GPEnumValue("true")]
            _true,

            /// <summary>
            /// <para>NONE</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("NONE")]
            [GPEnumValue("false")]
            _false,

        }

        /// <summary>
        /// <para>Build Pyramids</para>
        /// <para><xdoc>
        ///   <para>Specify whether to build pyramids.</para>
        ///   <bulletList>
        ///     <bullet_item>Unchecked—Does not build pyramids.</bullet_item><para/>
        ///     <bullet_item>Checked—Builds pyramids. This is the default.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定是否构建金字塔。</para>
        ///   <bulletList>
        ///     <bullet_item>未选中 - 不构建金字塔。</bullet_item><para/>
        ///     <bullet_item>选中 （Checked） - 构建金字塔。这是默认设置。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Build Pyramids")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _build_pyramids_value _build_pyramids { get; set; } = _build_pyramids_value._true;

        public enum _build_pyramids_value
        {
            /// <summary>
            /// <para>BUILD_PYRAMIDS</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("BUILD_PYRAMIDS")]
            [GPEnumValue("true")]
            _true,

            /// <summary>
            /// <para>NONE</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("NONE")]
            [GPEnumValue("false")]
            _false,

        }

        /// <summary>
        /// <para>Calculate Statistics</para>
        /// <para><xdoc>
        ///   <para>Specify whether to calculate statistics.</para>
        ///   <bulletList>
        ///     <bullet_item>Unchecked—Does not calculate statistics.</bullet_item><para/>
        ///     <bullet_item>Checked—Calculates statistics. This is the default.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定是否计算统计信息。</para>
        ///   <bulletList>
        ///     <bullet_item>未选中 - 不计算统计数据。</bullet_item><para/>
        ///     <bullet_item>选中 （Checked） - 计算统计数据。这是默认设置。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Calculate Statistics")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _calculate_statistics_value _calculate_statistics { get; set; } = _calculate_statistics_value._true;

        public enum _calculate_statistics_value
        {
            /// <summary>
            /// <para>CALCULATE_STATISTICS</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("CALCULATE_STATISTICS")]
            [GPEnumValue("true")]
            _true,

            /// <summary>
            /// <para>NONE</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("NONE")]
            [GPEnumValue("false")]
            _false,

        }

        /// <summary>
        /// <para>Include Source Datasets</para>
        /// <para><xdoc>
        ///   <para>Specify whether to build pyramids and calculate statistics on the source raster datasets, or calculate statistics on the raster items in a mosaic dataset. This option only applies to mosaic datasets.</para>
        ///   <bulletList>
        ///     <bullet_item>Unchecked—Statistics will be calculated for each raster item in the mosaic dataset (on each row in the attribute table). Any functions added to the raster item will be applied before generating the statistics. This is the default.</bullet_item><para/>
        ///     <bullet_item>Checked—Builds pyramids and calculates statistics on the source data of the mosaic dataset.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定是构建金字塔并计算源栅格数据集的统计数据，还是计算镶嵌数据集中栅格项目的统计数据。此选项仅适用于镶嵌数据集。</para>
        ///   <bulletList>
        ///     <bullet_item>未选中—将计算镶嵌数据集中每个栅格项目（在属性表中的每一行上）的统计数据。添加到栅格项目的所有函数都将在生成统计数据之前应用。这是默认设置。</bullet_item><para/>
        ///     <bullet_item>选中 - 构建金字塔并计算镶嵌数据集源数据的统计数据。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Include Source Datasets")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _BUILD_ON_SOURCE_value _BUILD_ON_SOURCE { get; set; } = _BUILD_ON_SOURCE_value._false;

        public enum _BUILD_ON_SOURCE_value
        {
            /// <summary>
            /// <para>BUILD_ON_SOURCE</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("BUILD_ON_SOURCE")]
            [GPEnumValue("true")]
            _true,

            /// <summary>
            /// <para>NONE</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("NONE")]
            [GPEnumValue("false")]
            _false,

        }

        /// <summary>
        /// <para>Block Field</para>
        /// <para>The name of the field within a mosaic dataset's attribute table used to identify items that should be considered one item when performing some calculations and operations.</para>
        /// <para>镶嵌数据集属性表中字段的名称，用于标识在执行某些计算和操作时应视为一个项目的项目。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Block Field")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _block_field { get; set; } = null;


        /// <summary>
        /// <para>Estimate Mosaic Dataset Statistics</para>
        /// <para><xdoc>
        ///   <para>Specify whether to calculate statistics for the mosaic dataset (not the rasters within it). The statistics are derived from the existing statistics that have been calculated for each raster in the mosaic dataset.</para>
        ///   <bulletList>
        ///     <bullet_item>Unchecked—Statistics are not calculated for the mosaic dataset. This is the default.</bullet_item><para/>
        ///     <bullet_item>Checked—Statistics will be calculated for the mosaic dataset.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定是否计算镶嵌数据集（而不是其中的栅格）的统计数据。统计数据来自为镶嵌数据集中的每个栅格计算的现有统计数据。</para>
        ///   <bulletList>
        ///     <bullet_item>未选中 - 不计算镶嵌数据集的统计数据。这是默认设置。</bullet_item><para/>
        ///     <bullet_item>选中—将计算镶嵌数据集的统计数据。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Estimate Mosaic Dataset Statistics")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _estimate_statistics_value _estimate_statistics { get; set; } = _estimate_statistics_value._false;

        public enum _estimate_statistics_value
        {
            /// <summary>
            /// <para>ESTIMATE_STATISTICS</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("ESTIMATE_STATISTICS")]
            [GPEnumValue("true")]
            _true,

            /// <summary>
            /// <para>NONE</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("NONE")]
            [GPEnumValue("false")]
            _false,

        }

        /// <summary>
        /// <para>X Skip Factor</para>
        /// <para><xdoc>
        ///   <para>The number of horizontal pixels between samples.</para>
        ///   <para>A skip factor controls the portion of the raster that is used when calculating the statistics. The input value indicates the horizontal or vertical skip factor, where a value of 1 will use each pixel and a value of 2 will use every second pixel. The skip factor can only range from 1 to the number of columns/rows in the raster.</para>
        ///   <para>A skip factor controls the portion of the raster that is used when calculating the statistics. The input value indicates the horizontal or vertical skip factor, where a value of 1 will use each pixel and a value of 2 will use every second pixel. The skip factor can only range from 1 to the number of columns/rows in the raster.</para>
        ///   <para>The value must be greater than zero and less than or equal to the number of columns in the raster. The default is 1 or the last skip factor used.</para>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>样本之间的水平像素数。</para>
        ///   <para>跳跃因子用于控制计算统计数据时使用的栅格部分。输入值指示水平或垂直跳跃因子，其中值 1 将使用每个像素，值 2 将使用每第二个像素。跳跃因子的范围只能从 1 到栅格中的列/行数。</para>
        ///   <para>跳跃因子用于控制计算统计数据时使用的栅格部分。输入值指示水平或垂直跳跃因子，其中值 1 将使用每个像素，值 2 将使用每第二个像素。跳跃因子的范围只能从 1 到栅格中的列/行数。</para>
        ///   <para>该值必须大于零且小于或等于栅格中的列数。默认值为 1 或使用的最后一个跳过因子。</para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("X Skip Factor")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public long? _x_skip_factor { get; set; } = null;


        /// <summary>
        /// <para>Y Skip Factor</para>
        /// <para><xdoc>
        ///   <para>The number of vertical pixels between samples.</para>
        ///   <para>A skip factor controls the portion of the raster that is used when calculating the statistics. The input value indicates the horizontal or vertical skip factor, where a value of 1 will use each pixel and a value of 2 will use every second pixel. The skip factor can only range from 1 to the number of columns/rows in the raster.</para>
        ///   <para>A skip factor controls the portion of the raster that is used when calculating the statistics. The input value indicates the horizontal or vertical skip factor, where a value of 1 will use each pixel and a value of 2 will use every second pixel. The skip factor can only range from 1 to the number of columns/rows in the raster.</para>
        ///   <para>The value must be greater than zero and less than or equal to the number of rows in the raster. The default is 1 or the last y skip factor used.</para>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>样本之间的垂直像素数。</para>
        ///   <para>跳跃因子用于控制计算统计数据时使用的栅格部分。输入值指示水平或垂直跳跃因子，其中值 1 将使用每个像素，值 2 将使用每第二个像素。跳跃因子的范围只能从 1 到栅格中的列/行数。</para>
        ///   <para>跳跃因子用于控制计算统计数据时使用的栅格部分。输入值指示水平或垂直跳跃因子，其中值 1 将使用每个像素，值 2 将使用每第二个像素。跳跃因子的范围只能从 1 到栅格中的列/行数。</para>
        ///   <para>该值必须大于零且小于或等于栅格中的行数。默认值为 1 或使用的最后一个 y 跳过因子。</para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Y Skip Factor")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public long? _y_skip_factor { get; set; } = null;


        /// <summary>
        /// <para>Ignore Values</para>
        /// <para><xdoc>
        ///   <para>The pixel values that are not to be included in the statistics calculation.</para>
        ///   <para>The default is no value.</para>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>统计信息计算中不包括的像素值。</para>
        ///   <para>默认值为 no value。</para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Ignore Values")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public List<object> _ignore_values { get; set; } = null;


        /// <summary>
        /// <para>Pyramid levels</para>
        /// <para><xdoc>
        ///   <para>Choose the number of reduced-resolution dataset layers that will be built. The default value is -1, which will build full pyramids. A value of 0 will result in no pyramid levels.</para>
        ///   <para>The maximum number of pyramid levels you can specify is 29. Any value of 30 or higher will create a full set of pyramids.</para>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>选择将要构建的低分辨率数据集图层的数量。默认值为 -1，将构建完整的金字塔。值为 0 将导致没有金字塔级别。</para>
        ///   <para>您可以指定的最大金字塔级别数为 29。任何 30 或更高的值都将创建一整套金字塔。</para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Pyramid levels")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public long? _pyramid_level { get; set; } = null;


        /// <summary>
        /// <para>Skip first level</para>
        /// <para><xdoc>
        ///   <para>Choose whether to skip the first pyramid level. Skipping the first level will take up slightly less disk space, but it will slow down performance at these scales.
        ///   <bulletList>
        ///     <bullet_item>Unchecked—The first pyramid level will be built. This is the default.  </bullet_item><para/>
        ///     <bullet_item>Checked—The first pyramid level will not be built.  </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        /// </xdoc></para>
        /// <para><xdoc>
        /// <para>选择是否跳过第一个金字塔级别。跳过第一级将占用稍少的磁盘空间，但会降低这些规模的性能。
        ///   <bulletList>
        ///     <bullet_item>未选中 - 将构建第一个金字塔级别。这是默认设置。 </bullet_item><para/>
        ///     <bullet_item>选中 - 不会构建第一个金字塔级别。</bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Skip first level")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _SKIP_FIRST_value _SKIP_FIRST { get; set; } = _SKIP_FIRST_value._false;

        public enum _SKIP_FIRST_value
        {
            /// <summary>
            /// <para>SKIP_FIRST</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("SKIP_FIRST")]
            [GPEnumValue("true")]
            _true,

            /// <summary>
            /// <para>NONE</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("NONE")]
            [GPEnumValue("false")]
            _false,

        }

        /// <summary>
        /// <para>Pyramid resampling technique</para>
        /// <para><xdoc>
        ///   <para>The resampling technique used to build your pyramids.</para>
        ///   <bulletList>
        ///     <bullet_item>Nearest neighbor—This method uses the value of the closest cell to assign a value to the output cell when resampling. This is the default.</bullet_item><para/>
        ///     <bullet_item>Bilinear—This method determines the new value of a cell based on a weighted distance average of the four nearest input cell centers.</bullet_item><para/>
        ///     <bullet_item>Cubic—This method determines the new value of a cell based on fitting a smooth curve through the 16 nearest input cell centers.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>用于构建金字塔的重采样技术。</para>
        ///   <bulletList>
        ///     <bullet_item>最近邻 - 此方法在重采样时使用最近像元的值为输出像元分配值。这是默认设置。</bullet_item><para/>
        ///     <bullet_item>双线性 - 此方法根据四个最近输入像元中心的加权距离平均值确定像元的新值。</bullet_item><para/>
        ///     <bullet_item>立方体 （Cubic） - 此方法基于通过 16 个最近的输入像元中心拟合平滑曲线来确定像元的新值。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Pyramid resampling technique")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _resample_technique_value _resample_technique { get; set; } = _resample_technique_value._NEAREST;

        public enum _resample_technique_value
        {
            /// <summary>
            /// <para>Nearest neighbor</para>
            /// <para>Nearest neighbor—This method uses the value of the closest cell to assign a value to the output cell when resampling. This is the default.</para>
            /// <para>最近邻 - 此方法在重采样时使用最近像元的值为输出像元分配值。这是默认设置。</para>
            /// </summary>
            [Description("Nearest neighbor")]
            [GPEnumValue("NEAREST")]
            _NEAREST,

            /// <summary>
            /// <para>Bilinear</para>
            /// <para>Bilinear—This method determines the new value of a cell based on a weighted distance average of the four nearest input cell centers.</para>
            /// <para>双线性 - 此方法根据四个最近输入像元中心的加权距离平均值确定像元的新值。</para>
            /// </summary>
            [Description("Bilinear")]
            [GPEnumValue("BILINEAR")]
            _BILINEAR,

            /// <summary>
            /// <para>Cubic</para>
            /// <para>Cubic—This method determines the new value of a cell based on fitting a smooth curve through the 16 nearest input cell centers.</para>
            /// <para>立方体 （Cubic） - 此方法基于通过 16 个最近的输入像元中心拟合平滑曲线来确定像元的新值。</para>
            /// </summary>
            [Description("Cubic")]
            [GPEnumValue("CUBIC")]
            _CUBIC,

        }

        /// <summary>
        /// <para>Pyramid compression type</para>
        /// <para><xdoc>
        ///   <para>The compression type to use when building the raster pyramids.</para>
        ///   <bulletList>
        ///     <bullet_item>Default—If the source data is compressed using a wavelet compression, it will build pyramids with the JPEG compression type; otherwise, LZ77 will be used. This is the default compression method.</bullet_item><para/>
        ///     <bullet_item>LZ77 Compression—The LZ77 compression algorithm will be used to build the pyramids. LZ77 can be used for any data type.</bullet_item><para/>
        ///     <bullet_item>JPEG Compression—The JPEG compression algorithm to build pyramids. Only data that adheres to the JPEG compression specification can use this compression type. If JPEG is chosen, you can then set the Compression Quality.</bullet_item><para/>
        ///     <bullet_item>JPEG Luma and Chroma—A lossy compression using the luma (Y) and chroma (Cb and Cr) color space components.</bullet_item><para/>
        ///     <bullet_item>No compression—No compression will be used when building pyramids.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>构建栅格金字塔时要使用的压缩类型。</para>
        ///   <bulletList>
        ///     <bullet_item>默认 - 如果使用小波压缩对源数据进行压缩，则将构建具有 JPEG 压缩类型的金字塔;否则，将使用 LZ77。这是默认的压缩方法。</bullet_item><para/>
        ///     <bullet_item>LZ77 压缩—LZ77 压缩算法将用于构建金字塔。LZ77 可用于任何数据类型。</bullet_item><para/>
        ///     <bullet_item>JPEG 压缩 - 用于构建金字塔的 JPEG 压缩算法。只有符合 JPEG 压缩规范的数据才能使用此压缩类型。如果选择了 JPEG，则可以设置压缩质量。</bullet_item><para/>
        ///     <bullet_item>JPEG 亮度和色度 - 使用亮度 （Y） 和色度（Cb 和 Cr）色彩空间分量的有损压缩。</bullet_item><para/>
        ///     <bullet_item>无压缩—构建金字塔时不使用压缩。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Pyramid compression type")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _compression_type_value _compression_type { get; set; } = _compression_type_value._DEFAULT;

        public enum _compression_type_value
        {
            /// <summary>
            /// <para>Default</para>
            /// <para>Default—If the source data is compressed using a wavelet compression, it will build pyramids with the JPEG compression type; otherwise, LZ77 will be used. This is the default compression method.</para>
            /// <para>默认 - 如果使用小波压缩对源数据进行压缩，则将构建具有 JPEG 压缩类型的金字塔;否则，将使用 LZ77。这是默认的压缩方法。</para>
            /// </summary>
            [Description("Default")]
            [GPEnumValue("DEFAULT")]
            _DEFAULT,

            /// <summary>
            /// <para>JPEG Compression</para>
            /// <para>JPEG Compression—The JPEG compression algorithm to build pyramids. Only data that adheres to the JPEG compression specification can use this compression type. If JPEG is chosen, you can then set the Compression Quality.</para>
            /// <para>JPEG 压缩 - 用于构建金字塔的 JPEG 压缩算法。只有符合 JPEG 压缩规范的数据才能使用此压缩类型。如果选择了 JPEG，则可以设置压缩质量。</para>
            /// </summary>
            [Description("JPEG Compression")]
            [GPEnumValue("JPEG")]
            _JPEG,

            /// <summary>
            /// <para>LZ77 Compression</para>
            /// <para>LZ77 Compression—The LZ77 compression algorithm will be used to build the pyramids. LZ77 can be used for any data type.</para>
            /// <para>LZ77 压缩—LZ77 压缩算法将用于构建金字塔。LZ77 可用于任何数据类型。</para>
            /// </summary>
            [Description("LZ77 Compression")]
            [GPEnumValue("LZ77")]
            _LZ77,

            /// <summary>
            /// <para>No compression</para>
            /// <para>No compression—No compression will be used when building pyramids.</para>
            /// <para>无压缩—构建金字塔时不使用压缩。</para>
            /// </summary>
            [Description("No compression")]
            [GPEnumValue("NONE")]
            _NONE,

            /// <summary>
            /// <para>JPEG Luma and Chroma</para>
            /// <para>JPEG Luma and Chroma—A lossy compression using the luma (Y) and chroma (Cb and Cr) color space components.</para>
            /// <para>JPEG 亮度和色度 - 使用亮度 （Y） 和色度（Cb 和 Cr）色彩空间分量的有损压缩。</para>
            /// </summary>
            [Description("JPEG Luma and Chroma")]
            [GPEnumValue("JPEG_YCBCR")]
            _JPEG_YCBCR,

        }

        /// <summary>
        /// <para>Compression quality (1-100)</para>
        /// <para>The compression quality to use when pyramids are built with the JPEG compression method. The value must be between 0 and 100. The values closer to 100 will produce a higher-quality image, but the compression ratio will be lower.</para>
        /// <para>使用 JPEG 压缩方法构建金字塔时要使用的压缩质量。该值必须介于 0 和 100 之间。接近 100 的值将产生更高质量的图像，但压缩比会更低。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Compression quality (1-100)")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public long _compression_quality { get; set; } = 75;


        /// <summary>
        /// <para>Skip Existing</para>
        /// <para><xdoc>
        ///   <para>Specify whether to calculate statistics only where they are missing, or regenerate them even if they exist.</para>
        ///   <bulletList>
        ///     <bullet_item>Checked—Statistics will only be calculated if they do not already exist. This is the default.</bullet_item><para/>
        ///     <bullet_item>Unchecked—Statistics will be calculated even if they already exist; existing statistics will be overwritten.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定是仅在缺少统计数据时计算统计数据，还是即使存在统计数据也重新生成统计数据。</para>
        ///   <bulletList>
        ///     <bullet_item>选中 - 仅当统计数据尚不存在时，才会计算统计数据。这是默认设置。</bullet_item><para/>
        ///     <bullet_item>未选中 - 即使统计数据已存在，也会计算统计数据;现有统计信息将被覆盖。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Skip Existing")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _skip_existing_value _skip_existing { get; set; } = _skip_existing_value._true;

        public enum _skip_existing_value
        {
            /// <summary>
            /// <para>SKIP_EXISTING</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("SKIP_EXISTING")]
            [GPEnumValue("true")]
            _true,

            /// <summary>
            /// <para>OVERWRITE</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("OVERWRITE")]
            [GPEnumValue("false")]
            _false,

        }

        /// <summary>
        /// <para>Updated Input Data</para>
        /// <para></para>
        /// <para></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Updated Input Data")]
        [Description("")]
        [Option(OptionTypeEnum.derived)]
        public object _out_workspace { get; set; }


        /// <summary>
        /// <para>Query Definition</para>
        /// <para>An SQL expression to select raster datasets that will be processed.</para>
        /// <para>用于选择将要处理的栅格数据集的 SQL 表达式。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Query Definition")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _where_clause { get; set; } = null;


        /// <summary>
        /// <para>SIPS Mode</para>
        /// <para><xdoc>
        ///   <para>Specifies whether to enable building of pyramid files using key processes and algorithms defined in the Softcopy Image Processing Standard (SIPS), NGA.STND.0014.
        ///   <bulletList>
        ///     <bullet_item>Unchecked—Pyramids will be built using standard subsampling methods. This is the default.  </bullet_item><para/>
        ///     <bullet_item>Checked—Pyramids will be built using SIPS processing.  </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        /// </xdoc></para>
        /// <para><xdoc>
        /// <para>指定是否启用使用软拷贝图像处理标准 （SIPS） NGA 中定义的关键进程和算法生成金字塔文件。编号：STND.0014。
        ///   <bulletList>
        ///     <bullet_item>未选中—将使用标准子采样方法构建金字塔。这是默认设置。 </bullet_item><para/>
        ///     <bullet_item>选中 - 将使用 SIPS 处理构建金字塔。</bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("SIPS Mode")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _sips_mode_value _sips_mode { get; set; } = _sips_mode_value._false;

        public enum _sips_mode_value
        {
            /// <summary>
            /// <para>SIPS_MODE</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("SIPS_MODE")]
            [GPEnumValue("true")]
            _true,

            /// <summary>
            /// <para>NONE</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("NONE")]
            [GPEnumValue("false")]
            _false,

        }

        public BuildPyramidsandStatistics SetEnv(object parallelProcessingFactor = null, object pyramid = null, object rasterStatistics = null)
        {
            base.SetEnv(parallelProcessingFactor: parallelProcessingFactor, pyramid: pyramid, rasterStatistics: rasterStatistics);
            return this;
        }

    }

}